代理模式
我的理解
    由一个代理类全程代理某个目标类然后由代理类对象执行目标类的方法
    可以类比如假设我无权限进行某个地方,但需要对这个地方的某些东西有些操作,可以找个对这个地方有权限的人来代理我的操作
使用背景
    TODO
1.静态代理
    被代理的类和目标类都需要实现同一接口,这样的好处是:
        如果有多个代理类,代理顺序可以任意调整 ,对于 Target 类,A 是对方法执行时间的代理,B 是对事务的代理,C 是对日志的代理
    如果都实现同一接口的话,就可以任意调事事务,时间,和日志的顺序
2.动态代理(cglib,asm)
    基本思路就是动态创建一个代理类,反射得到所有的方法,然后在方法前后插入代理逻辑
可以使用 cglib,或 asm ,也可以手动写 java 类文件,然后手动编译,加载进 ClassLoader
jdk 也有一个可以生成代理类的类 Proxy.newProxyInstance()

3.代理模式和装饰者模式的区别
    初看起来是一样的,都是聚合目标类,然后在目标类的方法前后增加逻辑
    TODO
    
4.静态代理和动态代理的区别
	动态代理是在运行的时候才创建代理类的实例,静态代理在编译过程中就已知代理类,必须要把代理类写出来